#ifndef SKYROAD_REPLY_H_
#define SKYROAD_REPLY_H_

#include <vector>
#include <string>
#include <boost/asio/io_service.hpp>
#include <boost/asio/buffer.hpp>

using namespace  boost;
using namespace  boost::asio;

#include "header.hpp"


struct reply 
{
    /// The status of the reply.
    enum status_type
    {
        ok = 200,
        created = 201,
        accepted = 202,
        no_content = 204,
        multiple_choices = 300,
        moved_permanently = 301,
        moved_temporarily = 302,
        not_modified = 304,
        bad_request = 400,
        unauthorized = 401,
        forbidden = 403,
        not_found = 404,
        internal_server_error = 500,
        not_implemented = 501,
        bad_gateway = 502,
        service_unavailable = 503
    }status;

    t_vt_hk_value vt_hkey_value;

    std::string content;

    /// Convert the reply into a vector of buffers. The buffers do not own the
    /// underlying memory blocks, therefore the reply object must remain valid and
    /// not be changed until the write operation has completed.
    std::vector<asio::const_buffer> to_buffers() const;

    /// Get a stock reply.
    static reply stock_reply(status_type status);
};

#endif


